package com.ky.leetcode.剑指Offer;

import java.util.ArrayList;
import java.util.List;
/*

输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。

    示例 1：
    输入：head = [1,3,2]
    输出：[2,3,1]

    限制：
    0 <= 链表长度 <= 10000

*/

public class 剑指Offer06从尾到头打印链表 {

    public static void main(String[] args) {
        ListNode head = new ListNode(1);
        ListNode headNext = new ListNode(3);
        ListNode last = new ListNode(2);
        head.next = headNext;
        headNext.next = last;
        Solution solution = new Solution();
        solution.reversePrint(head);
    }

    static class Solution {
        public int[] reversePrint(ListNode head) {
            List<Integer> list = new ArrayList<Integer>();
            while (head != null) {
                list.add(head.val);
                head = head.next;
            }
            int[] numbers = new int[0];
            if (list != null && !list.isEmpty()) {
                numbers = new int[list.size()];
                for (int i = 0; i < list.size(); i++) {
                    numbers[i] = list.get(list.size() - 1 - i);
                }
            }
            return numbers;
        }
    }

    static class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
        }
    }
}
